// Here we avoid loading the header multiple times
#ifndef TALLERSL_HEADER
#define TALLERSL_HEADER
// We need the Plasma Applet headers

#include <Plasma/PopupApplet>
#include <QPainter>

// Qt
class QGraphicsLinearLayout;

//Librerias para usar cURLpp
#include <curlpp/cURLpp.hpp>
#include <curlpp/Easy.hpp>
#include <curlpp/Options.hpp>
#include <curlpp/Exception.hpp>
//#include <Info.hpp>
#include <curlpp/Infos.hpp>

//Librerias para Strings y stream
#include <fstream>
#include <string>
#include <cstdlib>
#include <cerrno>


//Librerias para manejo de xml
#include <libxml++/libxml++.h>
#include <libxml++/parsers/textreader.h>

// 2. Widgets:
namespace Plasma {
class PushButton;
class TabBar;
class WebView;
class LineEdit;
class Frame;
//class Label; //farosasa
//class TextEdit; 
/**
  class TabBar;
  class WebView;
  class spinBox;
  //test:
  class ToolButton;
  class ScrollWidget;
  class Label;
  class ComboBox;
  class Frame;
  */
}

// Dialogos de configuracion personalizados
#include "ui_autenticacion.h"//farosasar
#include "ui_crearevento.h"//farosasar

//para el proxyqwidget todavia no los usamos
#include <QGraphicsScene>
#include <QGraphicsProxyWidget>


// Define our plasma Applet
//class tallersl : public Plasma::Applet
class TallerGmailCalendar : public Plasma::PopupApplet
{
    Q_OBJECT
public:
    // Constructor destructor basico
    TallerGmailCalendar (QObject *parent, const QVariantList &args);
    ~TallerGmailCalendar ();   
       
    QGraphicsWidget *graphicsWidget();
    void init();    
    
public slots:
    void autenticaUISlot();  
    void autenticarSlot();
    void mostrarUIEventoSlot();
    void crearEventoSlot();
    void traeEventosSlot();    
    void adelanteEventoSlot();
    void atrasEventoSlot();
    
    //void crearEventoSlotEjecutar();
    //void equalSlot();
    
protected:
    void createConfigurationInterface ( KConfigDialog *parent );

    
    
private:
    //Variables de autenticacion    
    //Token de autorizacion de Google Calendar solo el codigo sin Auth= ni nada mas
    std::string tokenAutorizacion;  
    //correo del usuario
    std::string correoUsuario;
    //numero final de eventos traidos para hoy
    int numeroEventos;
    //numero de tarea actualmente mostrada
    int tareaActual;
    //geografia de los eventos traidos
    std::string ciudadEventos;
    
    QGraphicsWidget *m_graphicsWidget;    
       
           
    Plasma::LineEdit *agregarTarea;//farosasar
    
    //Para crearEventoLayout
    Plasma::LineEdit * crearEventoLayoutTitulo;
    Plasma::LineEdit * crearEventoLayoutInstrucciones;
    Plasma::PushButton *crearEventoLayoutBoton;
    
    //Para traerEventoLayout
    Plasma::LineEdit *cabezoteTraeEvento;
    Plasma::PushButton *atrTraeEventoBoton;
    Plasma::PushButton *adeTraeEventoBoton;
    Plasma::PushButton *actualizaEventoBoton;
    
    //Para bienvenidaLayout
    Plasma::PushButton *bienvenidaBoton;
    
    //para mostrar el calendar
    std::string facilCal;
    
    
    //Para los tabs
    Plasma::TabBar* tabs;
    Plasma::WebView* webTab;
    Plasma::WebView* webTab2;
    
    //qwidgets usados para login,crear eventos etc.        
    Ui::AutenticacionForma autenticar_ui; //Para autenticacion
    Ui::CrearEvento creaevento_ui; //Para crear eventos
};

// This is the command that links your applet to the .desktop file
K_EXPORT_PLASMA_APPLET(tallergmailcalendar, TallerGmailCalendar)
#endif
